home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d1 / eddtv4.arc / EDDT_MAC.LIB < prev    next >
Text File  |  1988-03-28  |  14KB  |  403 lines

  1. CLS      MACRO
  2. ;;
  3. ;; --------------------------------------------------------------------
  4. ;;
  5. ;;       CLS - CLEAR SCREEN
  6. ;;
  7. ;;       THIS MACRO WILL CLEAR THE SCREEN
  8. ;;
  9. ;;       DESCRIPTION OF PARAMETERS
  10. ;;
  11. ;;             NONE
  12. ;;
  13. ;; --------------------------------------------------------------------
  14. ;;
  15.          PUSHA                    ; SAVE GENERAL REGISTERS
  16. ;
  17.          MOV   AL,00H             ; SCROLL ENTIRE WINDOW
  18.          MOV   CX,00H             ; UPPER LEFT
  19.          MOV   DX,184FH           ; LOWER RIGHT
  20.          MOV   BH,07H             ; FILL ATTRIBUTE
  21.          MOV   AH,06              ; VIDEO SCROLL ACTIVE PAGE
  22.          INT   10H                ; BIOS VIDEO RUPT
  23. ;
  24.          POPA                     ; RESTORE GENERAL REGISTERS
  25.          ENDM                     ;
  26. CMOS     MACRO CMTYPE,BYTE,DATA   ;; CMOS MACRO DEFINITION
  27. ;;
  28. ;;       CMOS CONFIGURATION ACCESS MACRO
  29. ;;
  30.          IFNDEF CM_IO             ; HAS THE PORT BEEN DEFINED ?
  31. CM_IO    EQU   071H               ; DEFINE CMOS I/O PORT
  32.          ENDIF
  33.          IFNDEF CM_ADDR           ; HAS THE PORT BEEN DEFINED ?
  34. CM_ADDR  EQU   070H               ; DEFINE CMOS ADDRESSING PORT
  35.          ENDIF
  36. ;;
  37.          IFIDNI <CMTYPE>,<READ>   ;; IS THIS A READ REQUEST ?
  38.          MOV   AL,BYTE            ; GET THE BYTE ADDRESS IN AL
  39.          OUT   CM_ADDR,AL         ; SEND ADDRESS TO CMOS PORT
  40.          JMP   $+2                ; WAIT FOR DATA TO SETTLE ON BUS
  41.          JMP   $+2                ; WAIT FOR DATA TO SETTLE ON BUS
  42.          IN    AL,CM_IO           ; READ THE REQUESTED DATA
  43. ;
  44.          EXITM                    ;; EXIT MACRO
  45.          ENDIF
  46. ;;
  47.          IFIDNI <CMTYPE>,<WRITE>  ;; IS THIS A WRITE REQUEST ?
  48.          MOV   AL,BYTE            ; GET THE BYTE ADDRESS IN AL
  49.          OUT   CM_ADDR,AL         ; SEND ADDRESS TO CMOS PORT
  50.          JMP   $+2                ; WAIT FOR DATA TO SETTLE ON BUS
  51.          JMP   $+2                ; WAIT FOR DATA TO SETTLE ON BUS
  52.          IFNB  <DATA>
  53.          MOV   AL,DATA            ; PUT DATA IN AL
  54.          ENDIF
  55.          OUT   CM_IO,AL           ; WRITE THE REQUESTED DATA
  56. ;
  57.          EXITM                    ;; EXIT MACRO
  58.          ENDIF
  59. ;;
  60. ;; ----- IF WE GET HERE THE TYPE WAS INVALID
  61. ;;
  62.          .LALL
  63.          .ERR
  64.          %OUT INVALID TYPE SPECIFIED IN CMOS MACRO > CMTYPE
  65. ;CMOS01...INVALID TYPE SPECIFIED FOR CMOS MACRO
  66.          .SALL
  67.          ENDM
  68. CSRP     MACRO FIELD
  69. ;;
  70. ;; --------------------------------------------------------------------
  71. ;;
  72. ;;       CSRP - CURSOR POSITION
  73. ;;
  74. ;;       THIS MACRO WILL POSITION THE CURSOR TO A LOCATION DEFINED
  75. ;;       BY THE DFLD MACRO INSTRUCTION.
  76. ;;
  77. ;;       DESCRIPTION OF PARAMETERS
  78. ;;
  79. ;;             FIELD - THE LABEL OF THE FIELD TO BE OUTPUT
  80. ;;
  81. ;; --------------------------------------------------------------------
  82. ;;
  83. ;; ----- CHECK FOR REQUIRED OPERANDS
  84. ;;
  85.          IFB   <FIELD>            ; CHECK FOR FIELD PASSED
  86.          %OUT  *CSRP -  REQUIRED PARAMETER 'FIELD' UNDEFINED
  87.          .LALL
  88. ; ***** CSRP -  REQUIRED PARAMETER 'FIELD' UNDEFINED
  89.          .XALL
  90.          .ERR
  91.          ENDIF
  92.          IFNB  <FIELD>
  93.          PUSHA                    ; SAVE GENERAL REGISTERS
  94. ;
  95.          MOV   AH,0FH             ; REQUEST CURRENT VIDEO STATE
  96.          INT   10H                ; BIOS VIDEO RUPT
  97. ;
  98. ; -----  BH NOW CONTAINS THE ACTIVE VIDEO PAGE
  99. ;
  100.          MOV   DX,WORD PTR FIELD  ; GET CURSOR POSITION
  101. ;
  102.          MOV   AH,02H             ; POSITION CURSOR FUNCTION
  103.          INT   10H                ; BIOS VIDEO RUPT
  104. ;
  105.          POPA                     ; RESTORE GENERAL REGS
  106.          ENDIF
  107.          ENDM                     ;
  108. DFLD     MACRO ROW,COL,ATR,DATA
  109.          LOCAL LBL2               ; DEFINE LOCAL LABEL
  110. ;;
  111. ;; --------------------------------------------------------------------
  112. ;;
  113. ;;       DFLD - DEFINE FIELD MACRO
  114. ;;
  115. ;;       THIS MACRO WILL DEFINE AN OUTPUT FIELD TO BE WRITTEN
  116. ;;       TO THE VIDEO DISPLAY. THE MACRO WILL GENERATE CONSTANTS
  117. ;;       USED BY THE IO ROUTINES TO LOCATE THE DATA ON THE SCREEN
  118. ;;       AND SET THE ATTRIBUTES.
  119. ;;       THE RESULTING MEMORY CONSTANTS HAVE THE FOLLOWING FORMAT:
  120. ;;
  121. ;;       DB    COLUMN             ; COLUMN TO START OUTPUT IN
  122. ;;       DB    ROW                ; ROW TO START OUTPUT IN
  123. ;;       DB    ATR                ; ATTRIBUTE BYTE FOR FIELD
  124. ;;       DW    LENGTH             ; LENGTH OF DATA
  125. ;;       DB    'DATA'             ; DATA TO OUTPUT
  126. ;;       DB    00H                ; END OF MESSAGE INDICATOR
  127. ;;
  128. ;;       DESCRIPTION OF PARAMETERS
  129. ;;
  130. ;;             ROW  - THE LINE ON THE DISPLAY FOR THE OUTPUT (1-25)
  131. ;;
  132. ;;             COL  - THE COLUMN ON THE DISPLAY FOR THE OUTPUT (1,80)
  133. ;;
  134. ;;             ATR  - THE DISPLAY ATTRIBUTE DESIRED FOR THE FIELD.
  135. ;;
  136. ;;             DATA - THE ASCII CHARACTER STRING YOU WISH TO DISPLAY
  137. ;;                    IN THE FIELD. THIS PARAMETER MAY BE OMITTED
  138. ;;                    AND ONLY A POSITIONING SEQUENCE AND ATTRIBUTE
  139. ;;                    CHARACTER WILL BE GENERATED. IF SUPPLIED, DATA
  140. ;;                    MUST BE IN QUOTES.
  141. ;;
  142. ;; --------------------------------------------------------------------
  143. ;;
  144. ;; ----- CHECK FOR REQUIRED OPERANDS
  145. ;;
  146.          IFB   <ROW>              ; CHECK FOR ROW PASSED
  147.          %OUT  *DFLD -  REQUIRED PARAMETER 'ROW' UNDEFINED
  148.          .LALL
  149. ; ***** DFLD -  REQUIRED PARAMETER 'ROW' UNDEFINED
  150.          .XALL
  151.          .ERR
  152.          ENDIF
  153. ;;
  154.          IFB   <COL>              ; CHECK FOR COL PASSED
  155.          %OUT  *DFLD -  REQUIRED PARAMETER 'COL' UNDEFINED
  156.          .LALL
  157. ; ***** DFLD -  REQUIRED PARAMETER 'COL' UNDEFINED
  158.          .XALL
  159.          .ERR
  160.          ENDIF
  161. ;;
  162.          IFB   <ATR>              ; CHECK FOR ATR PASSED
  163.          %OUT  *DFLD -  REQUIRED PARAMETER 'ATR' UNDEFINED
  164.          .LALL
  165. ; ***** DFLD -  REQUIRED PARAMETER 'ATR' UNDEFINED
  166.          .XALL
  167.          .ERR
  168.          ENDIF
  169. ;;
  170.          DB    COL                ; DEFINE COLUMN FOR DATA
  171.          DB    ROW                ; DEFINE ROW FOR DATA
  172.          DB    ATR                ; DEFINE ATTRIBUTE FOR DATA
  173.          IFNB  <DATA>             ; CHECK FOR DATA DEFINED
  174.          DW    (LBL2-($+2))       ; LENGTH OF DATA TO WRITE
  175.          DB    DATA
  176. LBL2     EQU   $                  ; GET ADDRESS OF EOM
  177.          DB    00H                ; END OF MESSAGE
  178.          ENDIF
  179.          ENDM
  180. EDDT     MACRO CYL,HD,WPC,CB,LZ,SEC  ; TABLE ENTRY MACRO DEFINITION
  181. ;----------------------------------------------------------------------
  182. ;        MACRO EDDT
  183. ;
  184. ;        PURPOSE -  DEFINE EDDT DRIVE TYPE TABLE ENTRIES
  185. ;
  186. ;        USAGE   -  EDDT CYL,HD,WPC,CB,LZ,SEC
  187. ;
  188. ;        DESCRIPTION OF PARAMETERS:
  189. ;
  190. ;        CYL - NUMBER OF CYLINDERS (REQUIRED)
  191. ;        HD  - NUMBER OF HEADS     (REQUIRED)
  192. ;        WPC - STARTING WRITE PRECOMPENSATION CYLINDER (REQUIRED)
  193. ;        CB  - CONTROL BYTE VALUE
  194. ;        LZ  - LANDING ZONE
  195. ;        SEC - SECTORS PER TRACK
  196. ;----------------------------------------------------------------------
  197. ;;
  198. ;;       TABLE ENTRY FORMAT
  199. ;;
  200. ;;       DW    CYL                ; NUMBER OF CYLINDERS
  201. ;;       DB    HD                 ; NUMBER OF HEADS
  202. ;;       DW    00                 ; NOT USED
  203. ;;       DW    WPC                ; STARTING WRITE PRE-COMP CYLINDER
  204. ;;       DB    00                 ; NOT USED
  205. ;;       DB    CB                 ; CONTROL BYTE
  206. ;;                                ; BIT 3=1 MORE THAN 8 HEADS
  207. ;;                                ;     6=1 DISABLE RETRIES
  208. ;;                                ;     7=1 DISABLE RETRIES
  209. ;;       DB    00,00,00           ; NOT USED
  210. ;;       DW    LZ                 ; LANDING ZONE
  211. ;;       DB    SEC                ; SECTORS PER TRACK
  212. ;;       DB    00                 ; RESERVED
  213. ;;---------------------------------------------------------------------
  214. ;;
  215. ;; ----- FIRST CHECK FOR REQUIRED PARAMETERS CODED
  216. ;;
  217.          .ERRB <CYL> ; NUMBER OF CYLINDERS NO DEFINED
  218.          .ERRB <HD>  ; NUMBER OF HEADS NOT DEFINED
  219.          .ERRB <WPC> ; STARTING WRITE PRE-COMPENSATION CYL NOT DEFINED
  220. ;;
  221. ;; ----- FIRST TIME INITIALIZE TYPE & START OF TABLE
  222. ;;
  223.          IFNDEF EDDTYPE           ; IS TYPE DEFINED ??
  224. EDDTYPE=0
  225. ;
  226.          ENDIF
  227.          IF2
  228. EDDTYPE=EDDTYPE+1
  229.          ENDIF
  230.          EDMSG %EDDTYPE
  231.          .XALL
  232.          DW    CYL              ; NUMBER OF CYLINDERS
  233.          DB    HD                ; NUMBER OF HEADS
  234.          DW    0                  ; NOT USED
  235. ;;
  236.          IFIDNI <WPC>,<NONE>
  237.          DW    0FFFFH             ; NO WRITE PRECOMP
  238.          ENDIF
  239.          IFDIFI <WPC>,<NONE>
  240.          DW    WPC               ; STARTING WRITE PRECOMP CYL
  241.          ENDIF
  242. ;;
  243.          DB    0                  ; NOT USED
  244. ;;
  245.          IFB   <CB>
  246.            IF  HD LE 8
  247.          DB    0                  ; CONTROL BYTE
  248.            ENDIF
  249.            IF  HD GT 8
  250.          DB    08H                ; CONTROL BYTE
  251.            ENDIF
  252.          ENDIF
  253.          IFNB  <CB>
  254.          DB    CB                 ; CONTROL BYTE
  255.          ENDIF
  256. ;;
  257.          DB    0,0,0              ; NOT USED
  258.          IFNB  <LZ>
  259.          DW    LZ              ; LANDING ZONE
  260.          ENDIF
  261.          IFB   <LZ>
  262.          DW    CYL              ; LANDING ZONE
  263.          ENDIF
  264.          IFNB  <SEC>
  265.          DB    SEC                ; SECTORS/TRACK
  266.          ENDIF
  267. ;;
  268.          IFB   <SEC>
  269.          DB    17D                ; SECTORS/TRACK
  270.          ENDIF
  271. ;;
  272.          DB    0                  ; RESERVED
  273.          ENDM
  274. EDMSG    MACRO NUM
  275.          IF2
  276.          .LALL
  277. %OUT -------------------------------------------------------
  278. %OUT     EDDT - TABLE ENTRY DEFINITION FOR DRIVE TYPE NUM
  279. %OUT -------------------------------------------------------
  280.          .XALL
  281.          ENDIF
  282.          ENDM
  283. PAUSE    MACRO
  284. ;;
  285. ;; --------------------------------------------------------------------
  286. ;;
  287. ;;       PAUSE - PAUSE TO LET OPERATOR READ THE SCREEN
  288. ;;
  289. ;;       THIS MACRO WILL GENERATE INTERRUPT 15 FUNCTION 86H WHICH
  290. ;;       WILL WAIT THE TASK FOR AN INTERVAL
  291. ;;
  292. ;;       DESCRIPTION OF PARAMETERS
  293. ;;
  294. ;;             NONE
  295. ;;
  296. ;; --------------------------------------------------------------------
  297. ;;
  298.          PUSH  CX                 ; SAVE CX REGISTER
  299.          PUSH  DX                 ; SAVE DX REGISTER
  300. ;
  301.          MOV   CX,01H             ; WAIT TIME
  302.          MOV   DX,00H             ;  INTERVAL VALUE
  303.          MOV   AH,86H             ; WAIT FUNCTION
  304.          INT   15H                ; BIOS RUPT
  305. ;
  306.          POP   DX                 ; RESTORE DX REGISTER
  307.          POP   CX                 ; RESTORE CX REGISTER
  308.          ENDM                     ;
  309. READK    MACRO BFR
  310. ;;
  311. ;; --------------------------------------------------------------------
  312. ;;
  313. ;;       READK - READ KEYBOARD
  314. ;;
  315. ;;       THIS MACRO WILL READ FROM THE KEY BOARD. THE ASCII
  316. ;;       CHARACTERS READ ARE PLACED IN THE INPUT BUFFER.
  317. ;;
  318. ;;       DESCRIPTION OF PARAMETERS
  319. ;;
  320. ;;             BFR - INPUT BUFFER AS DEFINED BY DOS FUNCTION 0AH
  321. ;;
  322. ;; --------------------------------------------------------------------
  323. ;;
  324. ;; ----- CHECK FOR REQUIRED OPERANDS
  325. ;;
  326.          IFB   <BFR>              ; CHECK FOR BFR PASSED
  327.          %OUT  *READK -  REQUIRED PARAMETER 'BFR' UNDEFINED
  328.          .LALL
  329. ; ***** READK -  REQUIRED PARAMETER 'BFR' UNDEFINED
  330.          .XALL
  331.          .ERR
  332.          ENDIF
  333.          PUSH  DX                 ; SAVE DX REGISTER
  334.          LEA   DX,BFR             ; GET BUFFER ADDRESS
  335.          MOV   AL,0AH             ; BUFFERED KEYBOARD INPUT FUNCTION
  336.          MOV   AH,0CH             ; CLEAR BUFFER & READ STRING
  337.          INT   21H                ; DOS FUNCTION RUPT
  338.          POP   DX
  339.          ENDM                     ;
  340. WCS      MACRO FIELD,ATR,RCS,PAGE
  341. ;;
  342. ;; --------------------------------------------------------------------
  343. ;;
  344. ;;       WCS - WRITE CHARACTER STRING
  345. ;;
  346. ;;       THIS MACRO WILL OUTPUT A CHARACTER STRING DEFINED BY
  347. ;;       THE DFLD MACRO INSTRUCTION.
  348. ;;
  349. ;;       DESCRIPTION OF PARAMETERS
  350. ;;
  351. ;;             FIELD - THE LABEL OF THE FIELD TO BE OUTPUT
  352. ;;             ATR   - THE ATTRIBUTE BYTE FOR THE FIELD
  353. ;;                     IF OMITTED, THE PRE-DEFINED ATTRIBUTE
  354. ;;                     FROM THE DFLD MACRO IS USED
  355. ;;             RCS   - IF RCS IS CODED EQUAL TO CS, THEN THE VALUE
  356. ;;                     FO THE ES REG IS TAKEN FROM THE CS REG, NOT
  357. ;;                     THE DS REG
  358. ;;
  359. ;; --------------------------------------------------------------------
  360. ;;
  361. ;; ----- CHECK FOR REQUIRED OPERANDS
  362. ;;
  363.          IFB   <FIELD>            ; CHECK FOR FIELD PASSED
  364.          %OUT  *WCS -  REQUIRED PARAMETER 'FIELD' UNDEFINED
  365.          .LALL
  366. ; ***** WCS -  REQUIRED PARAMETER 'FIELD' UNDEFINED
  367.          .XALL
  368.          .ERR
  369.          ENDIF
  370.          IFNB  <FIELD>
  371.          PUSHA                    ; SAVE GENERAL REGISTERS
  372.          PUSH  ES                 ; SAVE ES REGISTER
  373.          IFDIFI <RCS>,<CS>
  374.          PUSH  DS                 ; DS TO STACK
  375.          ENDIF
  376.          IFIDNI <RCS>,<CS>
  377.          PUSH  CS                 ; DS TO STACK
  378.          ENDIF
  379.          POP   ES                 ; ES OFF THE STACK
  380.          LEA   BP,FIELD+5         ; ADDRESS OF FIELD
  381.          MOV   DX,WORD PTR FIELD  ; GET CURSOR POSITION
  382.          MOV   CX,WORD PTR FIELD+3 ; GET LENGTH OF STRING
  383.          IFB   <ATR>
  384.          MOV   BL,BYTE PTR FIELD+2 ; GET ATTRIBUTE BYTE
  385.          ENDIF
  386.          IFNB  <ATR>
  387.          MOV   BL,ATR             ; GET ATTRIBUTE BYTE
  388.          ENDIF
  389. ;
  390.          IFB   <PAGE>
  391.          MOV   BH,00H             ; SELECT PAGE 0
  392.          ENDIF
  393.          IFNB  <PAGE>
  394.          MOV   BH,PAGE            ; SELECT PAGE
  395.          ENDIF
  396.          MOV   AX,1301H           ; WRITE STRING & MOVE CURSOR
  397.          INT   10H                ; BIOS VIDEO RUPT
  398. ;
  399.          POP   ES                 ; RESTORE ES REGISTER
  400.          POPA                     ; RESTORE GENERAL REGS
  401.          ENDIF
  402.          ENDM                     ;
  403.